package com.demo.java.OD401_450.OD439;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【小扇和小船的数字游戏(C&D卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146325543
 */
public class OdMain {
    public static void main(String[] args) {
        // 读取输入
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // 输入整数n

        // 调用函数并输出结果
        int result = findNextNumber(n); // 调用函数找出下一个符合条件的数
        System.out.println(result); // 输出结果
    }

    // 该函数找出比n大的最小整数，其二进制中1的个数与n相同
    static int findNextNumber(int n) {
        // 计算n的二进制表示中1的个数
        int countOnes = Integer.bitCount(n);

        // 从n + 1开始，逐步寻找符合条件的数
        int m = n + 1; // 初始化m为n + 1
        // 循环直到找到一个其二进制中1的个数与n相同的数
        while (Integer.bitCount(m) != countOnes) {
            m++; // 每次m加1，继续查找
        }

        return m; // 返回符合条件的m
    }
}
